/*
 *所有关于EQU_FAULT_SOLUTION类的业务代码应在此处编写
*可使用repository.调用常用方法，获取EF/Dapper等信息
*如果需要事务请使用repository.DbContextBeginTransaction
*也可使用DBServerProvider.手动获取数据库相关信息
*用户信息、权限、角色等使用UserContext.Current操作
*EQU_FAULT_SOLUTIONService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter
*/
using VOL.Core.BaseProvider;
using VOL.Core.Extensions.AutofacManager;
using VOL.Entity.DomainModels;
using System.Linq;
using VOL.Core.Utilities;
using System.Linq.Expressions;
using VOL.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VOL.System.IRepositories;
using System.Collections.Generic;
using System.Net;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace VOL.System.Services
{
    public partial class EQU_FAULT_SOLUTIONService
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        private readonly IEQU_FAULT_SOLUTIONRepository _repository;//访问数据库

        [ActivatorUtilitiesConstructor]
        public EQU_FAULT_SOLUTIONService(
            IEQU_FAULT_SOLUTIONRepository dbRepository,
            IHttpContextAccessor httpContextAccessor
            )
        : base(dbRepository)
        {
            _httpContextAccessor = httpContextAccessor;
            _repository = dbRepository;
            //多租户会用到这init代码，其他情况可以不用
            //base.Init(dbRepository);
        }
        public override WebResponseContent Del(object[] keys, bool delList = true)
        {
            var arrid= keys.Select(t => t.ToString().ToUpper()).ToArray();
            var fAULT_PHENOMENONs = _repository.DbContext.Set<EQU_FAULT_PHENOMENON>()
                       .Where(t => arrid.Contains( t.FaultSolutionId)).ToList();
            foreach (var item in fAULT_PHENOMENONs)
            {
                item.FaultSolutionId = null;
            }
            if (fAULT_PHENOMENONs.Count > 0)
            {
                _repository.DbContext.Set<EQU_FAULT_PHENOMENON>().UpdateRange(fAULT_PHENOMENONs);
                _repository.DbContext.SaveChanges();
            }
            return base.Del(keys, delList);
        }
        public override WebResponseContent Add(SaveModel saveDataModel)
        {
            var rs= base.Add(saveDataModel);
            KeyValuePair<string, object> idm = saveDataModel.MainData.Where(t => t.Key == "Id").FirstOrDefault();
            KeyValuePair<string, object> content = saveDataModel.MainData.Where(t => t.Key == "Content").FirstOrDefault();
            if (content.Key != null)
            {
                if (content.Value != "")
                {
                    var id = idm.Value.ToString().ToUpper();

                    var fAULT_PHENOMENONs = _repository.DbContext.Set<EQU_FAULT_PHENOMENON>()
                        .Where(t => t.Content == content.Value).ToList();
                    foreach (var item in fAULT_PHENOMENONs)
                    {
                        item.FaultSolutionId = id;
                    }
                    if (fAULT_PHENOMENONs.Count > 0)
                    {
                        _repository.DbContext.Set<EQU_FAULT_PHENOMENON>().UpdateRange(fAULT_PHENOMENONs);
                        _repository.DbContext.SaveChanges();
                    }


                }
            }
            return rs;
        }

        public override WebResponseContent Update(SaveModel saveModel)
        {
            KeyValuePair<string, object> content = saveModel.MainData.Where(t => t.Key == "Content").FirstOrDefault();
            KeyValuePair<string, object> idm = saveModel.MainData.Where(t => t.Key == "Id").FirstOrDefault();
            if (content.Key != null)
            {
                if (content.Value != "")
                {
                    var id = idm.Value.ToString().ToUpper();

                    var fAULT_PHENOMENONs = _repository.DbContext.Set<EQU_FAULT_PHENOMENON>()
                        .Where(t => t.Content == content.Value).ToList();
                    foreach (var item in fAULT_PHENOMENONs)
                    {
                        item.FaultSolutionId = id;
                    }
                    if (fAULT_PHENOMENONs.Count > 0)
                    {
                        _repository.DbContext.Set<EQU_FAULT_PHENOMENON>().UpdateRange(fAULT_PHENOMENONs);
                        _repository.DbContext.SaveChanges();
                    }
       

                }
            }
            return base.Update(saveModel);  //调用基类的方法
        }
    }
}
